package com.luyuan.crm.product.service;

import java.io.Serializable;
import java.util.List;

import org.hibernate.criterion.Order;

import com.luyuan.crm.product.model.Product;
import com.luyuan.crm.product.model.ProductType;
import com.ruijie.foundation.annotation.DomainService;
import com.ruijie.foundation.query.Page;
import com.ruijie.foundation.query.criteria.CriteriaTemplate;
import com.ruijie.foundation.service.Repository;

@DomainService
public interface ProductService extends Repository<Product> {

    /*
     * 分页查询
     */
    public Page pagedQuery(CriteriaTemplate criteria, int pageNo, int pageSize, List<Order> orders);

    /*
     * 根据ID获取产品
     */
    public Product getProductById(Serializable id);

    List<Product> findByProductType(ProductType productType);

    /*
     * 更新产品信息
     */
    public void updateProduct(Product product);

    /*
     * 新增产品信息
     */
    public void addProduct(Product product);

    /*
     * 根据id删除产品
     */
    public void deleteProductById(Serializable id);

    /*
     * 批量删除
     */
    public void batchDeleteProduct(Serializable[] ids);

    /**
     * 指设置可用
     */
    public void enableByProductId(Serializable id);

    /**
     * 指设置禁用
     */
    public void disableByProductId(Serializable id);

    /*
     * 是否存在产品类别下的产品
     */
    public boolean hasChildProducts(Serializable id);

}
